package com.pattern.singleton;

/**
 * @Description: 推荐使用 ，
 * @Author: whp
 * @Date: 2021-01-27 15:49
 */
public class ClassInnerSingleton {

    private ClassInnerSingleton() {
    }
    // 内部类：在外部类初始化的时候，并没有初始化内部类，只有在调用的时候才初始化
    // 达到延迟加载的作用
    public static class SingletonHolder {
        // 显式静态，静态属性，只在第一次实例的时候加载，此处利用jvm，保证了线安全
        private static ClassInnerSingleton sl = new ClassInnerSingleton();
    }

    public static ClassInnerSingleton getInstance() {
        return SingletonHolder.sl;
    }
}
